/**
 * 
 */
package br.com.skynix.tcmc.model.seguranca;

import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import org.hibernate.annotations.ForeignKey;

import br.com.skynix.tcmc.base.model.EntidadeDominio;
import br.com.skynix.tcmc.model.rh.Empresa;

/**
 * @author davi
 * 
 */
@Entity
@Table(name = "tb_grupo")
public class Grupo extends EntidadeDominio {
	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_empresa_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK001_grupo")
	private Empresa empresa;

	@ManyToMany(mappedBy = "grupos")
	@ForeignKey(name = "FK002_grupo_x_menu")
	private Set<Menu> menus;

	@ManyToMany(mappedBy = "grupos", fetch = FetchType.LAZY)
	@ForeignKey(name = "FK001_grupo_x_usuario")
	private Set<Usuario> usuarios;

	/**
	 * @return the empresa
	 */
	public Empresa getEmpresa() {
		return empresa;
	}

	/**
	 * @param empresa the empresa to set
	 */
	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	/**
	 * @return the menus
	 */
	public Set<Menu> getMenus() {
		return menus;
	}

	/**
	 * @param menus the menus to set
	 */
	public void setMenus(Set<Menu> menus) {
		this.menus = menus;
	}

	/**
	 * @return the usuarios
	 */
	public Set<Usuario> getUsuarios() {
		return usuarios;
	}

	/**
	 * @param usuarios the usuarios to set
	 */
	public void setUsuarios(Set<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
}
